エラーの 4 分類
4 分類
数字じゃない文字列に対する String.toInt() 呼び出しなど
呼び出し側は、事前条件を満たしているかどうかをメソッド呼び出しで確認できる
値を Optional で返すことで、事前条件を満たしていない場合は nil にする、というような API 設計ができる
SIGINT や別スレッドからのスレッドのキャンセルといった非同期条件や、メモリ不足やスタックオーバーフローといった遍在するエラー
抽象化により発生することもある (コレクションのサイズ取得やプロパティ読み出しは通常エラーにならないが、例えば DB 接続する実装を抽象化していた場合はエラーになりうる)
普遍的なので、伝搬は自動的でなければならず、実装はゼロコスト (zero-cost) か可能な限りそれに近づけるべき
あらゆる場所でのエラーハンドリングをしようとするとコストがバカ高くなるので
境界を超えた配列アクセスや nil オプショナルに対する強制アンラップなど